package com.ticket.system.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ticket.common.annotation.Excel;
import com.ticket.common.core.domain.BaseEntity;
import com.ticket.system.domain.YanchuOrderDetail;
import io.swagger.annotations.ApiModelProperty;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

public class YanchuOrderVO extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    private Long id;

    /** 订单号 */
    @Excel(name = "订单号")
    private String orderId;


    /** 演出时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "演出开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date yanchuStart;

    /** 总价格 */
    @Excel(name = "总价格")
    private BigDecimal totalMoney;

    /** 支付状态，1：已占票等待支付，2：已支付，3：超时未支付自动取消，4：支付后退款 */
    @Excel(name = "支付状态，10：已占票等待支付，2：已支付，3：超时未支付自动取消，4：支付后退款")
    private Integer status;

    /** 退款状态，1：提交退款，2：退款审核成功，3：退款中，4：退款成功, 5:退款失败 */
    @Excel(name = "退款状态，1：提交退款，2：退款审核成功，3：退款中，4：退款成功, 5:退款失败")
    private Integer refundStatus;

    @ApiModelProperty(value = "订单详情",dataType = "YanchuOrderDetail",hidden = true)
    private List<YanchuOrderDetail> orderDetails;

    @Excel(name = "支付时间")
    private Date payTime;
    @Excel(name = "订单联系人姓名")
    private String contacts;
    @Excel(name = "订单联系人电话（联系方式）")
    private String contactNumber;
    @Excel(name = "应付金额")
    private BigDecimal yingfuMoney;

    //支付单号
    private String prePayId;

    //演出海报
    private String poster;

    //剧院名称
    private String opera;

    //演出结束时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date yanchuEnd;

    //优惠内容
    private String promotion;

    //演出名称
    private String performName;

    //购票数量
    private Map<BigDecimal,Integer> ticket;

    //订单金额
    private Map<String,BigDecimal> price;

    private Integer refundFlag;

    private String num;

    private String sessionName;
    private String balanceAmt;
    private String cardAmt;

    private String wechatAmt;

    private String ocontacts;
    private String ocontactNumber;

    private BigDecimal balanceRefundAmt;
    private BigDecimal cardRefundAmt;
    private BigDecimal wechatRefundAmt;

    private Integer ticketType;
    private Integer ticketWay;
    private Integer ticketOutWay;
    private Integer discountType;
    private String ticketDemo;
    private String payDemo;
    private BigDecimal discountPer;
    private BigDecimal discountAmt;
    private Integer payWay;
    private Integer ticketStatus;
    private String payName;
    private String tab;
    private String ticketWayName;

    private String userName;

    private String discountTypeName;

    private BigDecimal refundMoney;

    public BigDecimal getRefundMoney() {
        return refundMoney;
    }

    public void setRefundMoney(BigDecimal refundMoney) {
        this.refundMoney = refundMoney;
    }


    public String getDiscountTypeName() {
        return discountTypeName;
    }

    public void setDiscountTypeName(String discountTypeName) {
        this.discountTypeName = discountTypeName;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getTicketWayName() {
        return ticketWayName;
    }

    public void setTicketWayName(String ticketWayName) {
        this.ticketWayName = ticketWayName;
    }

    public Integer getTicketType() {
        return ticketType;
    }

    public void setTicketType(Integer ticketType) {
        this.ticketType = ticketType;
    }

    public Integer getTicketWay() {
        return ticketWay;
    }

    public void setTicketWay(Integer ticketWay) {
        this.ticketWay = ticketWay;
    }

    public Integer getTicketOutWay() {
        return ticketOutWay;
    }

    public void setTicketOutWay(Integer ticketOutWay) {
        this.ticketOutWay = ticketOutWay;
    }

    public Integer getDiscountType() {
        return discountType;
    }

    public void setDiscountType(Integer discountType) {
        this.discountType = discountType;
    }

    public String getTicketDemo() {
        return ticketDemo;
    }

    public void setTicketDemo(String ticketDemo) {
        this.ticketDemo = ticketDemo;
    }

    public String getPayDemo() {
        return payDemo;
    }

    public void setPayDemo(String payDemo) {
        this.payDemo = payDemo;
    }

    public BigDecimal getDiscountPer() {
        return discountPer;
    }

    public void setDiscountPer(BigDecimal discountPer) {
        this.discountPer = discountPer;
    }

    public BigDecimal getDiscountAmt() {
        return discountAmt;
    }

    public void setDiscountAmt(BigDecimal discountAmt) {
        this.discountAmt = discountAmt;
    }

    public Integer getPayWay() {
        return payWay;
    }

    public void setPayWay(Integer payWay) {
        this.payWay = payWay;
    }

    public Integer getTicketStatus() {
        return ticketStatus;
    }

    public void setTicketStatus(Integer ticketStatus) {
        this.ticketStatus = ticketStatus;
    }

    public String getPayName() {
        return payName;
    }

    public void setPayName(String payName) {
        this.payName = payName;
    }

    private List<ExcelOrderDetailVo> excelOrderDetailVoList;

    public List<ExcelOrderDetailVo> getExcelOrderDetailVoList() {
        return excelOrderDetailVoList;
    }

    public void setExcelOrderDetailVoList(List<ExcelOrderDetailVo> excelOrderDetailVoList) {
        this.excelOrderDetailVoList = excelOrderDetailVoList;
    }

    public BigDecimal getBalanceRefundAmt() {
        return balanceRefundAmt;
    }

    public void setBalanceRefundAmt(BigDecimal balanceRefundAmt) {
        this.balanceRefundAmt = balanceRefundAmt;
    }

    public BigDecimal getCardRefundAmt() {
        return cardRefundAmt;
    }

    public void setCardRefundAmt(BigDecimal cardRefundAmt) {
        this.cardRefundAmt = cardRefundAmt;
    }

    public BigDecimal getWechatRefundAmt() {
        return wechatRefundAmt;
    }

    public void setWechatRefundAmt(BigDecimal wechatRefundAmt) {
        this.wechatRefundAmt = wechatRefundAmt;
    }

    public String getOcontacts() {
        return ocontacts;
    }

    public void setOcontacts(String ocontacts) {
        this.ocontacts = ocontacts;
    }

    public String getOcontactNumber() {
        return ocontactNumber;
    }

    public void setOcontactNumber(String ocontactNumber) {
        this.ocontactNumber = ocontactNumber;
    }

    public String getBalanceAmt() {
        return balanceAmt;
    }

    public void setBalanceAmt(String balanceAmt) {
        this.balanceAmt = balanceAmt;
    }

    public String getCardAmt() {
        return cardAmt;
    }

    public void setCardAmt(String cardAmt) {
        this.cardAmt = cardAmt;
    }

    public String getWechatAmt() {
        return wechatAmt;
    }

    public void setWechatAmt(String wechatAmt) {
        this.wechatAmt = wechatAmt;
    }

    public Integer getRefundFlag() {
        return refundFlag;
    }

    public void setRefundFlag(Integer refundFlag) {
        this.refundFlag = refundFlag;
    }


    public String getSessionName() {
        return sessionName;
    }

    public void setSessionName(String sessionName) {
        this.sessionName = sessionName;
    }


    public String getNum() {
        return num;
    }

    public void setNum(String num) {
        this.num = num;
    }

    public String getPerformName() {
        return performName;
    }

    public void setPerformName(String performName) {
        this.performName = performName;
    }

    public String getPoster() {
        return poster;
    }

    public void setPoster(String poster) {
        this.poster = poster;
    }

    public Map<String, BigDecimal> getPrice() {
        return price;
    }

    public void setPrice(Map<String, BigDecimal> price) {
        this.price = price;
    }

    public String getPromotion() {
        return promotion;
    }

    public void setPromotion(String promotion) {
        this.promotion = promotion;
    }
    public Map<BigDecimal,Integer> getTicket() {
        return ticket;
    }

    public void setTicket(Map<BigDecimal,Integer> ticket) {
        this.ticket = ticket;
    }

    public String getOpera() {
        return opera;
    }

    public void setOpera(String opera) {
        this.opera = opera;
    }

    public BigDecimal getYingfuMoney() {
        return yingfuMoney;
    }

    public void setYingfuMoney(BigDecimal yingfuMoney) {
        this.yingfuMoney = yingfuMoney;
    }

    public Date getPayTime() {
        return payTime;
    }

    public void setPayTime(Date payTime) {
        this.payTime = payTime;
    }

    public String getContacts() {
        return contacts;
    }

    public void setContacts(String contacts) {
        this.contacts = contacts;
    }

    public String getContactNumber() {
        return contactNumber;
    }

    public void setContactNumber(String contactNumber) {
        this.contactNumber = contactNumber;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setOrderId(String orderId) 
    {
        this.orderId = orderId;
    }

    public String getOrderId() 
    {
        return orderId;
    }
    public void setYanchuStart(Date yanchuStart)
    {
        this.yanchuStart = yanchuStart;
    }

    public Date getYanchuStart() 
    {
        return yanchuStart;
    }
    public void setTotalMoney(BigDecimal totalMoney)
    {
        this.totalMoney = totalMoney;
    }

    public BigDecimal getTotalMoney()
    {
        return totalMoney;
    }
    public void setStatus(Integer status)
    {
        this.status = status;
    }

    public Integer getStatus()
    {
        return status;
    }
    public void setRefundStatus(Integer refundStatus)
    {
        this.refundStatus = refundStatus;
    }

    public Integer getRefundStatus()
    {
        return refundStatus;
    }

    public List<YanchuOrderDetail> getOrderDetails() {
        return orderDetails;
    }

    public void setOrderDetails(List<YanchuOrderDetail> orderDetails) {
        this.orderDetails = orderDetails;
    }

    public Date getYanchuEnd() {
        return yanchuEnd;
    }

    public void setYanchuEnd(Date yanchuEnd) {
        this.yanchuEnd = yanchuEnd;
    }

    public String getPrePayId() {
        return prePayId;
    }

    public void setPrePayId(String prePayId) {
        this.prePayId = prePayId;
    }

    public String getTab() {
        return tab;
    }

    public void setTab(String tab) {
        this.tab = tab;
    }
    @Override
    public String toString() {
        return "YanchuOrderVO{" +
                "id=" + id +
                ", orderId='" + orderId + '\'' +
                ", yanchuStart=" + yanchuStart +
                ", totalMoney=" + totalMoney +
                ", status=" + status +
                ", refundStatus=" + refundStatus +
                ", orderDetails=" + orderDetails +
                ", payTime=" + payTime +
                ", contacts='" + contacts + '\'' +
                ", contactNumber='" + contactNumber + '\'' +
                ", yingfuMoney=" + yingfuMoney +
                ", poster='" + poster + '\'' +
                ", opera='" + opera + '\'' +
                ", yanchuEnd=" + yanchuEnd +
                ", promotion='" + promotion + '\'' +
                ", performName='" + performName + '\'' +
                ", ticket=" + ticket +
                ", price=" + price +
                ", num='" + num + '\'' +
                '}';
    }
}
